<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        window.onload=function()
        {
            setTimeout(function()
            {
                console.log("timeout 2222")
            },2000)

            setTimeout(function()
            {
                console.log("timeout 1111")
            },1000)

            function fn()
            {
                console.log("fn()");
            }
            fn();

            console.log("alert()之前");
            alert("……");//暂停当前主线程的执行
            console.log("alert()之后");
        };
    </script>
</head>
<body>
    <!--
        1.如何证明JS执行时单线程的
            setTimeout()的回调函数是在主线程执行的
            定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行

        2.为什么JS要用单线程模式，而不用多线程模式
            JavaScript的单线程，它的用途有关
            作为浏览器脚本语言，JavaScript的主要用途是与用户互动，以及操作DOM
            这决定了他只能是单线程，否则会带来很复杂的同步问题

        3.代码的分类
            初始化代码
            回调代码

        4.JS引擎执行代码的基本流程
            限制性初始化代码：包含一些特别的代码
                设置定时器
                绑定监听
                发送ajax请求
            后面在某个时刻才会执行回调代码
    -->
</body>
</html>